<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once(APPPATH."models/adminmodel.php");
class administradordao extends CI_Model {
	
	function __construct(){
		
		parent::__construct();
		
	}
	
	public function excluirAdmin($id){
		try {
			$exec = $this->db->query("call excluirAdminById(".$id.")") or die("Erro : " . $this->db->_error_message());
			if($exec->num_rows() > 0){
				$d = $exec->row();
				$erro = (int)$d->erro;
				$this->db->close();
				if($erro == 0){
					$erro = 1;
				} else {
					$erro = 2;
				}
				return $erro;
			}
			$this->db->close();
			return null;
		} catch (Exception $e) {
			try {
				$this->db->close();
			} catch (Exception $a) {
			}
		}
		return null;
	}
	
	public function getAdminById($id){
		try {
			$exec = $this->db->query("call getAdminById(".$id.")") or die("Erro : " . $this->db->_error_message());
			if($exec->num_rows() > 0){
				$d = $exec->row();
				$a = new AdminModel();
				$a->setIdAdmin($d->idadministrador);
				$a->setNome($d->nome);
				$a->setLogin($d->login);
				$this->db->close();
				return $a;
			}
			$this->db->close();
			return null;
		} catch (Exception $e) {
			try {
				$this->db->close();
			} catch (Exception $a) {
			}
		}
		return null;
	}
	
	/**
	 * 
	 * @param int $id
	 * @param string $nome
	 * @param string $login
	 * @param string $senha
	 * @return number|NULL
	 * @return 1 = update com sucesso com senha; 2 = update com sucesso sem senha; 3 = adm não encontrado; 4 = inserido com sucesso; 5 = desconhecido 
	 */
	public function salvarEditar($id, $nome, $login, $senha){
		try{
			if(isset($senha) && $senha != ""){
				$senha = md5($senha);
			} else {
				$senha = "";
			}
			$exec = $this->db->query("call inserirEditarAdmin(".$id.", '".$nome."', '".$login."', '".$senha."')") or die("Erro : " . $this->db->_error_message());
			if($exec->num_rows() > 0){
				$d = $exec->row();
				$erro = (int) $d->erro;
				$tipo = $d->tipo;
				$this->db->close();
				if($erro == 0){
					return 1; // update com senha
				}
				elseif($erro == -1){
					return 2; // update sem senha
				}
				elseif($erro == -2){
					return 3; // adm não encontrado para editar
				}
				elseif($erro > 0){
					return 4; // inserido com sucesso
					
				}
				else {
					return 5; // desconhecido
				}
			} 
			$this->db->close();
			return null;
		} catch (Exception $e){
			try {
				$this->db->close();
			} catch (Exception $a) {
			}
		}
		return null;
	}
	
	public function getListaAdministrador(){
		try{
			$exec = $this->db->query("call getAdministradores()") or die("Erro : " . $this->db->_error_message());
			if($exec->num_rows() > 0){
				$listaAdm = array();
				foreach($exec->result() as $d){
					$a = new AdminModel();
					$a->setIdAdmin($d->idadministrador);
					$a->setNome($d->nome);
					array_push($listaAdm, $a);
				}
				$this->db->close();
				return $listaAdm;
			}
			$this->db->close();
			return null;
		} catch (Exception $e){
			try {
				$this->db->close();
			} catch (Exception $a) {
			}
		}
		return null;
	}
	
}
